
package com.huaweicloud.saaslanding.install.properties;

import static com.huaweicloud.saaslanding.install.constant.ModelConstant.SWR_PREFIX;

import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Size;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import org.springframework.validation.annotation.Validated;

/**
 * 功能描述
 *
 * @since 2022-03-23
 */
@EqualsAndHashCode
@Data
@AllArgsConstructor
@NoArgsConstructor
@Component
@Validated
@ConfigurationProperties(prefix = SWR_PREFIX)
public class Swr {
    /**
     * 前端微服务：镜像
     */
    @NotEmpty(message = "前端微服务镜像(swr.uiSwrOrganization)不能为空")
    private String uiSwrOrganization;

    @NotEmpty(message = "前端微服务镜像(swr.uiSwrName)不能为空")
    @Size(max = 50, message = "前端微服务镜像名称(swr.uiSwrName)长度不能超过50")
    private String uiSwrName;

    @NotEmpty(message = "前端微服务镜像(swr.uiSwrVersion)不能为空")
    private String uiSwrVersion;

    @NotNull(message = "前端微服务镜像(swr.uiServerPort)不能为空")
    private Integer uiServerPort;

    @NotEmpty(message = "前端微服务镜像(swr.uiAccessPrefix)不能为空")
    private String uiAccessPrefix;

    /**
     * 网关微服务：镜像
     */
    @NotEmpty(message = "网关微服务镜像(swr.gatewaySwrOrganization)不能为空")
    private String gatewaySwrOrganization;

    @NotEmpty(message = "网关微服务镜像(swr.gatewaySwrName)不能为空")
    @Size(max = 50, message = "网关微服务镜像名称(swr.gatewaySwrName)长度不能超过50")
    private String gatewaySwrName;

    @NotEmpty(message = "网关微服务镜像(swr.gatewaySwrVersion)不能为空")
    private String gatewaySwrVersion;

    @NotNull(message = "网关微服务镜像(swr.gatewayServerPort)不能为空")
    private Integer gatewayServerPort;

    /**
     * 租户微服务镜像
     */
    @NotEmpty(message = "租户微服务镜像(swr.tenantSwrOrganization)不能为空")
    private String tenantSwrOrganization;

    @NotEmpty(message = "租户微服务镜像(swr.tenantSwrName)不能为空")
    @Size(max = 50, message = "租户微服务镜像名称(swr.tenantSwrName)长度不能超过50")
    private String tenantSwrName;

    @NotEmpty(message = "租户微服务镜像(swr.tenantSwrVersion)不能为空")
    private String tenantSwrVersion;

    @NotNull(message = "租户微服务镜像(swr.tenantServerPort)不能为空")
    private Integer tenantServerPort;

    @NotEmpty(message = "租户微服务镜像(swr.tenantAccessPrefix)不能为空")
    private String tenantAccessPrefix;

    /**
     * 授权微服务镜像
     */
    @NotEmpty(message = "授权微服务镜像(swr.authoritySwrOrganization)不能为空")
    private String authoritySwrOrganization;

    @NotEmpty(message = "授权微服务镜像(swr.authoritySwrName)不能为空")
    @Size(max = 50, message = "授权微服务镜像名称(swr.authoritySwrName)长度不能超过50")
    private String authoritySwrName;

    @NotEmpty(message = "授权微服务镜像(swr.authoritySwrVersion)不能为空")
    private String authoritySwrVersion;

    @NotNull(message = "授权微服务镜像(swr.authorityServerPort)不能为空")
    private Integer authorityServerPort;

    @NotEmpty(message = "授权微服务镜像(swr.authorityAccessPrefix)不能为空")
    private String authorityAccessPrefix;

    /**
     * 部署微服务镜像
     */
    @NotEmpty(message = "部署微服务镜像(swr.deploymentSwrOrganization)不能为空")
    private String deploymentSwrOrganization;

    @NotEmpty(message = "部署微服务镜像(swr.deploymentSwrName)不能为空")
    @Size(max = 50, message = "部署微服务镜像名称(swr.deploymentSwrName)长度不能超过50")
    private String deploymentSwrName;

    @NotEmpty(message = "部署微服务镜像(swr.deploymentSwrVersion)不能为空")
    private String deploymentSwrVersion;

    @NotNull(message = "部署微服务镜像(swr.deploymentServerPort)不能为空")
    private Integer deploymentServerPort;

    @NotEmpty(message = "部署微服务镜像(swr.deploymentAccessPrefix)不能为空")
    private String deploymentAccessPrefix;

    /**
     * 升级微服务镜像
     */
    @NotEmpty(message = "升级微服务镜像(swr.deploymentSwrOrganization)不能为空")
    private String upgradeSwrOrganization;

    @NotEmpty(message = "升级微服务镜像(swr.deploymentSwrName)不能为空")
    @Size(max = 50, message = "升级微服务镜像名称(swr.deploymentSwrName)长度不能超过50")
    private String upgradeSwrName;

    @NotEmpty(message = "升级微服务镜像(swr.deploymentSwrVersion)不能为空")
    private String upgradeSwrVersion;

    @NotNull(message = "升级微服务镜像(swr.deploymentServerPort)不能为空")
    private Integer upgradeServerPort;

    @NotEmpty(message = "升级微服务镜像(swr.deploymentAccessPrefix)不能为空")
    private String upgradeAccessPrefix;

    /**
     * 集成开发服务 镜像相关信息
     */
    @NotEmpty(message = "集成开发服务(swr.integratedSwrOrganization)不能为空")
    private String integratedSwrOrganization;

    @NotEmpty(message = "集成开发服务(swr.integratedSwrName)不能为空")
    @Size(max = 50, message = "集成开发服务(swr.integratedSwrName)长度不能超过50")
    private String integratedSwrName;

    @NotEmpty(message = "集成开发服务(swr.integratedSwrVersion)不能为空")
    private String integratedSwrVersion;

    @NotNull(message = "集成开发服务(swr.integratedServerPort)不能为空")
    private Integer integratedServerPort;

    @NotEmpty(message = "集成开发服务(swr.integratedAccessPrefix)不能为空")
    private String integratedAccessPrefix;

    /**
     * 运维服务 镜像相关信息
     */
    @NotEmpty(message = "运维服务(swr.maintenanceSwrOrganization)不能为空")
    private String maintenanceSwrOrganization;

    @NotEmpty(message = "运维服务(swr.maintenanceSwrName)不能为空")
    @Size(max = 50, message = "运维服务(swr.maintenanceSwrName)长度不能超过50")
    private String maintenanceSwrName;

    @NotEmpty(message = "运维服务(swr.maintenanceSwrVersion)不能为空")
    private String maintenanceSwrVersion;

    @NotNull(message = "运维服务(swr.maintenanceServerPort)不能为空")
    private Integer maintenanceServerPort;

    @NotEmpty(message = "运维服务(swr.maintenanceAccessPrefix)不能为空")
    private String maintenanceAccessPrefix;

    /**
     * 订单微服务镜像
     */
    @NotEmpty(message = "订单微服务镜像(swr.orderSwrOrganization)不能为空")
    private String orderSwrOrganization;

    @NotEmpty(message = "订单微服务镜像(swr.orderSwrName)不能为空")
    @Size(max = 50, message = "订单微服务镜像名称(swr.orderSwrName)长度不能超过50")
    private String orderSwrName;

    @NotEmpty(message = "订单微服务镜像(swr.orderSwrVersion)不能为空")
    private String orderSwrVersion;

    @NotNull(message = "订单微服务镜像(swr.orderServerPort)不能为空")
    private Integer orderServerPort;

    @NotEmpty(message = "订单微服务镜像(swr.orderAccessPrefix)不能为空")
    private String orderAccessPrefix;

    /**
     * 商品微服务镜像
     */
    @NotEmpty(message = "商品微服务镜像(swr.productSwrOrganization)不能为空")
    private String productSwrOrganization;

    @NotEmpty(message = "商品微服务镜像(swr.productSwrName)不能为空")
    @Size(max = 50, message = "商品微服务镜像名称(swr.productSwrName)长度不能超过50")
    private String productSwrName;

    @NotEmpty(message = "商品微服务镜像(swr.productSwrVersion)不能为空")
    private String productSwrVersion;

    @NotNull(message = "商品微服务镜像(swr.productServerPort)不能为空")
    private Integer productServerPort;

    @NotEmpty(message = "商品微服务镜像(swr.productAccessPrefix)不能为空")
    private String productAccessPrefix;

    /**
     * 电商业务应用前端微服务：镜像
     */
    @NotEmpty(message = "前端微服务镜像(swr.eCommerceUiSwrOrganization)不能为空")
    private String eCommerceUiSwrOrganization;

    @NotEmpty(message = "前端微服务镜像(swr.eCommerceUiSwrName)不能为空")
    @Size(max = 50, message = "前端微服务镜像名称(swr.eCommerceUiSwrName)长度不能超过50")
    private String eCommerceUiSwrName;

    @NotEmpty(message = "前端微服务镜像(swr.eCommerceUiSwrVersion)不能为空")
    private String eCommerceUiSwrVersion;

    @NotNull(message = "前端微服务镜像(swr.eCommerceUiServerPort)不能为空")
    private Integer eCommerceUiServerPort;

    @NotEmpty(message = "前端微服务镜像(swr.eCommerceUiAccessPrefix)不能为空")
    private String eCommerceUiAccessPrefix;

    /**
     * 酒店业务应用前端微服务：镜像
     */
    @NotEmpty(message = "前端微服务镜像(swr.hotelUiSwrOrganization)不能为空")
    private String hotelUiSwrOrganization;

    @NotEmpty(message = "前端微服务镜像(swr.hotelUiSwrName)不能为空")
    @Size(max = 50, message = "前端微服务镜像名称(swr.hotelUiSwrName)长度不能超过50")
    private String hotelUiSwrName;

    @NotEmpty(message = "前端微服务镜像(swr.hotelUiSwrVersion)不能为空")
    private String hotelUiSwrVersion;

    @NotNull(message = "前端微服务镜像(swr.hotelUiServerPort)不能为空")
    private Integer hotelUiServerPort;

    @NotEmpty(message = "前端微服务镜像(swr.hotelUiAccessPrefix)不能为空")
    private String hotelUiAccessPrefix;

    /**
     * 微服务业务应用前端微服务：镜像
     */
    @NotEmpty(message = "前端微服务镜像(swr.microUiSwrOrganization)不能为空")
    private String microUiSwrOrganization;

    @NotEmpty(message = "前端微服务镜像(swr.microUiSwrName)不能为空")
    @Size(max = 50, message = "前端微服务镜像名称(swr.microUiSwrName)长度不能超过50")
    private String microUiSwrName;

    @NotEmpty(message = "前端微服务镜像(swr.microUiSwrVersion)不能为空")
    private String microUiSwrVersion;

    @NotNull(message = "前端微服务镜像(swr.microUiServerPort)不能为空")
    private Integer microUiServerPort;

    @NotEmpty(message = "前端微服务镜像(swr.microUiAccessPrefix)不能为空")
    private String microUiAccessPrefix;

    /**
     * 日志微服务镜像
     */
    @NotEmpty(message = "日志微服务镜像(swr.logSwrOrganization)不能为空")
    private String logSwrOrganization;

    @NotEmpty(message = "日志微服务镜像(swr.logSwrName)不能为空")
    @Size(max = 50, message = "日志微服务镜像(swr.logSwrName)长度不能超过50")
    private String logSwrName;

    @NotEmpty(message = "日志微服务镜像(swr.logSwrVersion)不能为空")
    private String logSwrVersion;

    @NotNull(message = "日志微服务镜像(swr.logServerPort)不能为空")
    private Integer logServerPort;

    @NotEmpty(message = "日志微服务镜像(swr.logAccessPrefix)不能为空")
    private String logAccessPrefix;

    /**
     * 认证微服务镜像
     */
    @NotEmpty(message = "认证微服务镜像(swr.authSwrOrganization)不能为空")
    private String authSwrOrganization;

    @NotEmpty(message = "认证微服务镜像(swr.authSwrName)不能为空")
    @Size(max = 50, message = "日志微服务镜像(swr.logSwrName)长度不能超过50")
    private String authSwrName;

    @NotEmpty(message = "认证微服务镜像(swr.authSwrVersion)不能为空")
    private String authSwrVersion;

    @NotNull(message = "认证微服务镜像(swr.authServerPort)不能为空")
    private Integer authServerPort;

    @NotEmpty(message = "认证微服务镜像(swr.authAccessPrefix)不能为空")
    private String authAccessPrefix;

    /**
     * 运营微服务镜像
     */
    @NotEmpty(message = "运营微服务镜像(swr.operationSwrOrganization)不能为空")
    private String operationSwrOrganization;

    @NotEmpty(message = "运营微服务镜像(swr.operationSwrName)不能为空")
    @Size(max = 50, message = "运营微服务镜像(swr.operationSwrName)长度不能超过50")
    private String operationSwrName;

    @NotEmpty(message = "运营微服务镜像(swr.operationSwrVersion)不能为空")
    private String operationSwrVersion;

    @NotNull(message = "运营微服务镜像(swr.operationServerPort)不能为空")
    private Integer operationServerPort;

    @NotEmpty(message = "运营微服务镜像(swr.operationAccessPrefix)不能为空")
    private String operationAccessPrefix;

    /**
     * 计量微服务镜像
     */
    @NotEmpty(message = "计量微服务镜像(swr.measurementSwrOrganization)不能为空")
    private String measurementSwrOrganization;

    @NotEmpty(message = "计量微服务镜像(swr.measurementSwrName)不能为空")
    @Size(max = 50, message = "计量微服务镜像(swr.measurementSwrName)长度不能超过50")
    private String measurementSwrName;

    @NotEmpty(message = "计量微服务镜像(swr.measurementSwrVersion)不能为空")
    private String measurementSwrVersion;

    @NotNull(message = "计量微服务镜像(swr.measurementServerPort)不能为空")
    private Integer measurementServerPort;

    @NotEmpty(message = "计量微服务镜像(swr.measurementAccessPrefix)不能为空")
    private String measurementAccessPrefix;

    /**
     * 任务微服务镜像
     */
    @NotEmpty(message = "任务微服务镜像(swr.jobOrganization)不能为空")
    private String jobSwrOrganization;

    @NotEmpty(message = "任务微服务镜像(swr.jobSwrName)不能为空")
    @Size(max = 50, message = "任务微服务镜像(swr.jobSwrName)长度不能超过50")
    private String jobSwrName;

    @NotEmpty(message = "任务微服务镜像(swr.jobSwrVersion)不能为空")
    private String jobSwrVersion;

    @NotNull(message = "任务微服务镜像(swr.jobServerPort)不能为空")
    private Integer jobServerPort;

    @NotEmpty(message = "任务微服务镜像(swr.jobAccessPrefix)不能为空")
    private String jobAccessPrefix;
}
